package 临时;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.RingPlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;

import java.awt.*;
import java.io.File;
import java.io.IOException;

public class test {


    public static void main(String[] args) {
        ringChart();
    }
    /**
     * 生成环形图
     */
    public static void ringChart() {
        DefaultPieDataset dataSet = new DefaultPieDataset();
        //使用循环向数据集合中添加数据
        int i,j;
        String []a={"Java","VC","C++","数据结构","计算机网络"};
        int []b={1964,820,825,960,1000};
        for(i=0,j=0;i<a.length&&j<b.length;i++,j++){
            dataSet.setValue(a[i],b[j]);
        }

        StandardChartTheme mChartTheme = new StandardChartTheme("CN");
        mChartTheme.setLargeFont(new Font("黑体", Font.BOLD, 14)); // Y柱标签字体（浓度(单位：ppm)）
        mChartTheme.setExtraLargeFont(new Font("宋体", Font.PLAIN, 20)); //标题 （二氧化碳浓度趋势分析图）
        //应用主题样式
        ChartFactory.setChartTheme(mChartTheme);
        //定义图标对象
        JFreeChart chart = ChartFactory.createRingChart ("环形图",// 报表题目，字符串类型
                dataSet, // 获得数据集
                true, // 显示图例
                false, // 不用生成工具
                false // 不用生成URL地址
        );
        //图表
        RingPlot ringplot=(RingPlot) chart.getPlot();
        ringplot.setLabelFont(new Font("宋体", Font.BOLD, 14));
        //用来显示标注的注解，{0}:{1}用来设置显示的格式
        ringplot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}:{1}"));
        // ringplot.setBackgroundPaint(Color.gray);//设置背景色
        //设置简单标签
        ringplot.setSimpleLabels(true);
        //标题
        TextTitle texttitle=chart.getTitle();
        texttitle.setFont(new Font("宋体", Font.BOLD, 30));
        //图示
        LegendTitle legendtitle =chart.getLegend();
        legendtitle.setItemFont(new Font("宋体", Font.BOLD, 14));
        /*ChartFrame mChartFrame = new ChartFrame("环形图", chart);
        mChartFrame.pack();
        mChartFrame.setVisible(true);*/

        //在D盘目录下生成图片
        File p = new File("D://");
        if (!p.exists()) {
            p.mkdirs();
        }
        String imageName = System.currentTimeMillis() + "_环形图" + ".jpeg";
        File file = new File(p.getPath() + "/" + imageName);
        try {
            if(file.exists()) {
                file.delete();
            }
            ChartUtils.saveChartAsJPEG(file, chart, 800, 600);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
